Ссылка на практикум

  1. Построим и "грубо" оптимизируем с помощью MOPAC структуры нафталена и азулена:
In [8]:
%%bash
echo 'C1=CC=C2C=CC=C2C=C1   Azulene' > azu.smi
obgen azu.smi > azu.mol
babel -imol azu.mol -omop azu_opt.mop -xk "PM6"
MOPAC2009.exe azu_opt.mop
babel -imopout azu_opt.out -opdb azu_opt.pdb
In [1]:
%%bash
echo 'c1ccc2ccccc2c1      Naphthalene' > napht.smi
obgen napht.smi > napht.mol
babel -imol napht.mol -omop napht_opt.mop -xk "PM6"
MOPAC2009.exe napht_opt.mop
babel -imopout napht_opt.out -opdb napht_opt.pdb

A T O M   T Y P E S

IDX	TYPE
1	37
2	37
3	37
4	37
5	37
6	37
7	37
8	37
9	37
10	37
11	5
12	5
13	5
14	5
15	5
16	5
17	5
18	5

F O R M A L   C H A R G E S

IDX	CHARGE
1	0.000000
2	0.000000
3	0.000000
4	0.000000
5	0.000000
6	0.000000
7	0.000000
8	0.000000
9	0.000000
10	0.000000
11	0.000000
12	0.000000
13	0.000000
14	0.000000
15	0.000000
16	0.000000
17	0.000000
18	0.000000

P A R T I A L   C H A R G E S

IDX	CHARGE
1	-0.150000
2	-0.150000
3	-0.150000
4	0.000000
5	-0.150000
6	-0.150000
7	-0.150000
8	-0.150000
9	0.000000
10	-0.150000
11	0.150000
12	0.150000
13	0.150000
14	0.150000
15	0.150000
16	0.150000
17	0.150000
18	0.150000

S E T T I N G   U P   C A L C U L A T I O N S

SETTING UP BOND CALCULATIONS...
SETTING UP ANGLE & STRETCH-BEND CALCULATIONS...
SETTING UP TORSION CALCULATIONS...
SETTING UP OOP CALCULATIONS...
SETTING UP VAN DER WAALS CALCULATIONS...
SETTING UP ELECTROSTATIC CALCULATIONS...

S T E E P E S T   D E S C E N T

STEPS = 500

STEP n       E(n)         E(n-1)    
------------------------------------
    0      78.012      ----
   10    43.02518    44.38509
   20    35.15990    35.46349
   30    33.18804    33.34898
   40    32.10727    32.29781
   50    31.69157    31.70113
   60    31.53407    31.54209
   70    31.46249    31.46901
   80    31.40430    31.40953
   90    31.35732    31.36175
  100    31.31755    31.32116
  110    31.28505    31.28801
  120    31.25841    31.26084
  130    31.23652    31.23852
  140    31.21135    31.21578
  150    31.19748    31.19874
  160    31.18460    31.18636
  170    31.16975    31.17050
  180    31.16203    31.16285
  190    31.15462    31.15676
  200    31.14928    31.15083
  210    31.14598    31.14618
  220    31.14308    31.14327
    STEEPEST DESCENT HAS CONVERGED

W E I G H T E D   R O T O R   S E A R C H

  NUMBER OF ROTATABLE BONDS: 0
  NUMBER OF POSSIBLE ROTAMERS: 1
  GENERATED ONLY ONE CONFORMER


S T E E P E S T   D E S C E N T

STEPS = 500

STEP n       E(n)         E(n-1)    
------------------------------------
    0      31.135      ----
   10    31.13334    31.13409
   20    31.13312    31.13340
   30    31.13302    31.13314
   40    31.13385    31.13302
   50    31.13334    31.13296
   60    31.13310    31.13353
   70    31.13298    31.13319
   80    31.13292    31.13302
   90    31.13361    31.13294
  100    31.13323    31.13397
  110    31.13304    31.13340
  120    31.13294    31.13312
  130    31.13290    31.13299
  140    31.13355    31.13292
  150    31.13321    31.13392
  160    31.13303    31.13339
  170    31.13294    31.13313
  180    31.13289    31.13299
  190    31.13362    31.13292
  200    31.13326    31.13288
  210    31.13306    31.13349
  220    31.13296    31.13319
  230    31.13290    31.13303
  240    31.13382    31.13294
  250    31.13338    31.13290
  260    31.13313    31.13368
  270    31.13300    31.13330
  280    31.13293    31.13310
  290    31.13289    31.13298
  300    31.13358    31.13292
  310    31.13325    31.13288
  320    31.13307    31.13349
  330    31.13297    31.13321
  340    31.13291    31.13304
  350    31.13391    31.13295
  360    31.13344    31.13290
  370    31.13318    31.13379
  380    31.13303    31.13338
  390    31.13295    31.13314
  400    31.13290    31.13301
  410    31.13373    31.13293
  420    31.13334    31.13289
  430    31.13312    31.13364
  440    31.13300    31.13329
  450    31.13293    31.13310
  460    31.13289    31.13298
  470    31.13360    31.13292
  480    31.13327    31.13288
  490    31.13308    31.13352
  500    31.13298    31.13323
1 molecule converted
20 audit log messages 



           Your MOPAC executable has expired.
           Please go to web-site: http://openmopac.net/Download_MOPAC_Executable_Step2.html to get a new version of MOPAC.
           
           Press (enter) to continue.


In [1]:
from xmlrpclib import ServerProxy
from IPython.display import Image
import os, sys

# pymol launching
import __main__

__main__.pymol_argv = [ 'pymol', '-x' ]

### Если вывод в графическое окно тормозит или не нужен, то:
##__main__.pymol_argv = [ 'pymol', '-cp' ]


import pymol
 
pymol.finish_launching()
 
from pymol import cmd

### Информацию об ошибках можно смотреть там где запускали  ipython notebook

### Будем вставлять файлы изображений 

from IPython.display import Image

def Img(name):
    cmd.ray()
    cmd.png(name)
In [2]:
cmd.reinitialize()
cmd.load('azu.mol')
cmd.rotate(axis='x', angle=70)
cmd.do('set valence, on')
Img('azu.png')
Image(filename='azu.png')
Out[2]:

Азулен в конформации шезлонга

In [2]:
cmd.reinitialize()
cmd.load('azu_opt.pdb')
cmd.rotate(axis='x', angle=75)
cmd.do('set valence, on')
Img('azu_mop.png')
Image(filename='azu_mop.png')
Out[2]:

После преобразований Mopac выглядит плоским

In [7]:
cmd.reinitialize()
cmd.load('napht.mol')
cmd.rotate(axis='x', angle=-70)
cmd.do('set valence, on')
Img('napht.png')
Image(filename='napht.png')
Out[7]:
In [9]:
cmd.reinitialize()
cmd.load('napht_opt.pdb')
cmd.rotate(axis='x', angle=-70)
cmd.do('set valence, on')
Img('napht_mop.png')
Image(filename='napht_mop.png')
Out[9]:

С нафталеном глобальных изменений не произошло.

  1. Проведём более точную оптимизацию геометрии молекул с помощью GAMESS используя популярный базис 6-31G:
In [9]:
%%bash
babel -imopout azu_opt.out -ogamin azu_opt.inp
sed -i 's/ $CONTRL COORD=CART UNITS=ANGS $END/ $CONTRL COORD=CART UNITS=ANGS SCFTYP=RHF RUNTYP=OPTIMIZE $END\n $BASIS GBASIS=N31 NGAUSS=6 $end\n $system mwords=2 $end/' azu_opt.inp

babel -imopout napht_opt.out -ogamin napht_opt.inp
sed -i 's/ $CONTRL COORD=CART UNITS=ANGS $END/ $CONTRL COORD=CART UNITS=ANGS SCFTYP=RHF RUNTYP=OPTIMIZE $END\n $BASIS GBASIS=N31 NGAUSS=6 $end\n $system mwords=2 $end/' napht_opt.inp
In [10]:
%%bash
gms azu_opt.inp 1 | tee azu_opt.log
In [4]:
%%bash
gms napht_opt.inp 1 | tee napht_opt.log
  1. На основе полученных координат рассчитаем энергию методом Хартри-Фока и используя теорию функционала плотности:

Хартри-Фок:

In [13]:
%%bash
babel -igamout azu_opt.log -ogamin azu_hart.inp
sed -i 's/ $CONTRL COORD=CART UNITS=ANGS $END/ $CONTRL COORD=CART UNITS=ANGS SCFTYP=RHF RUNTYP=ENERGY $END\n $BASIS GBASIS=N31 NGAUSS=6\n  POLAR=POPN31 NDFUNC=1 $END\n $GUESS GUESS=HUCKEL $END\n $system mwords=2 $end/' azu_hart.inp
gms azu_hart.inp 1 | tee azu_hart.log
In [5]:
%%bash
babel -igamout napht_opt.log -ogamin napht_hart.inp
sed -i 's/ $CONTRL COORD=CART UNITS=ANGS $END/ $CONTRL COORD=CART UNITS=ANGS SCFTYP=RHF RUNTYP=ENERGY $END\n $BASIS GBASIS=N31 NGAUSS=6\n  POLAR=POPN31 NDFUNC=1 $END\n $GUESS GUESS=HUCKEL $END\n $system mwords=2 $end/' napht_hart.inp
gms napht_hart.inp 1 | tee napht_hart.log

DFT

In [14]:
%%bash
rm -rf /home/students/y12/popov/gamess-scratch/
babel -igamout azu_opt.log -ogamin azu_dft.inp
sed -i 's/ $CONTRL COORD=CART UNITS=ANGS $END/ $CONTRL COORD=CART UNITS=ANGS dfttyp=b3lyp RUNTYP=ENERGY $END\n $BASIS GBASIS=N31 NGAUSS=6\n  POLAR=POPN31 NDFUNC=1 $END\n $GUESS GUESS=HUCKEL $END\n $system mwords=2 $end/' azu_dft.inp
gms azu_dft.inp 1 | tee azu_dft.log
In [6]:
%%bash
rm -rf /home/students/y12/popov/gamess-scratch/
babel -igamout napht_opt.log -ogamin napht_dft.inp
sed -i 's/ $CONTRL COORD=CART UNITS=ANGS $END/ $CONTRL COORD=CART UNITS=ANGS dfttyp=b3lyp RUNTYP=ENERGY $END\n $BASIS GBASIS=N31 NGAUSS=6\n  POLAR=POPN31 NDFUNC=1 $END\n $GUESS GUESS=HUCKEL $END\n $system mwords=2 $end/' napht_dft.inp
gms napht_dft.inp 1 | tee napht_dft.log
  1. Извлечём значения энергий в энергетических единицах (Хартри):
In [6]:
%%bash
awk '/TOTAL ENERGY =/{print $4}'  *_dft.log
awk '/TOTAL ENERGY =/{print $4}'  *_hart.log

Учитывая, что \(E_{Hartree} = 627.509 469\; (kcal/mol)\), получаем таблицу:

Вещество E Naphthalene E Azulene ΔE, Hartree ΔE, kCal/mol
Хартри-Фок -383.3549 -383.2822 0.0727 45.61994
DFT -385.6402 -385.5852 0.055 34.51302

Из экспериментов известно, что энергия изомеризации нафталена в азулен составляет 35.3±2.2 kCal/mol. Согласно полученной таблице метод DFT оказался точнее метода Хартри-Фока, если судить по разнице энергий нафталена и азулена. При этом результаты DFT согласуются с экспериментом, в то время как метод Хартри-Фока дал ошибку ~22%.

  1. К сожалению, на kodomo доступ к Gabedit был запрещён, поэтому пришлось установить его себе локально.

В Gabedit было открыто окно "Display Geometry/Orbitals/Density/Vibration", в котором был загружен файл napht_dft.log. Затем была построена поверхность двух орбиталей.

HOMO (highest occupied molecular orbital):
34 E=-0.210800

In [2]:
Image(filename='HOMO.png')
Out[2]:
LUMO (lowest unoccupied molecular orbital): 35 E=-0.028300
In [16]:
Image(filename='LUMO.png')
Out[16]:

Тоже самое для азулена

HOMO:
34 E=-0.186200

In [3]:
Image(filename='azuHOMO.png')
Out[3]:

LUMO:
35 E=-0.063300

In [4]:
Image(filename='azuLUMO.png')
Out[4]:

Сделать какие-либо выводы из этих картинок мне сложно, разве что исследуемые орбитали расположены на азулене и нафталене схожим образом, т.к. номера орбиталей HOMO и LUMO между этими молекулами совпадают.